/*** 
 * @_______________#########_______________________ 
 * @______________############_____________________ 
 * @______________#############____________________ 
 * @_____________##__###########___________________ 
 * @____________###__######_#####__________________ 
 * @____________###_#######___####_________________ 
 * @___________###__##########_####________________ 
 * @__________####__###########_####_______________ 
 * @________#####___###########__#####_____________ 
 * @_______######___###_########___#####___________ 
 * @_______#####___###___########___######_________ 
 * @______######___###__###########___######_______ 
 * @_____######___####_##############__######______ 
 * @____#######__#####################_#######_____ 
 * @____#######__##############################____ 
 * @___#######__######_#################_#######___ 
 * @___#######__######_######_#########___######___ 
 * @___#######____##__######___######_____######___ 
 * @___#######________######____#####_____#####____ 
 * @____######________#####_____#####_____####_____ 
 * @_____#####________####______#####_____###______ 
 * @______#####______;###________###______#________ 
 * @________##_______####________####______________ 
 * @
 * @Author: ipk518 121206530@qq.com
 * @Date: 2025-03-06 20:00:55
 * @LastEditors: ipk518 121206530@qq.com
 * @LastEditTime: 2025-05-19 16:04:29
 * @FilePath: /etws-sxk2307/Middlewares/usrPort/ddsResolver.h
 * @Description: 
 * @************佛祖保佑************
 * @Copyright (c) 2025 by etws@quyujiang, All Rights Reserved. 
 */

#ifndef _DDSRESOLVER_H_
#define _DDSRESOLVER_H_

#include <mutex>
#include <queue>
#include <thread>
#include <stdbool.h>
#include <functional>
#include <iostream>
#include "Resolver.hpp"
#include "../dataTransmission/fastDDS/idl/ddsProtocol.h"

class ddsResolver : public Resolver<ProtocolSuite>
{
public:
    ddsResolver(string name);
    ~ddsResolver() override;

    void remove(ProtocolSuite* src) override;
    void removeAll() override;
    
private:
    string m_thName;
    bool m_thRunFlag;
    std::mutex m_datMutex;
    struct privateData* creatBag(ProtocolSuite *srcBag);
    static void resolver(ddsResolver * protocol);/*dds数据解析线程*/
public:
    std::thread * resolverFd;
    std::queue< ProtocolSuite > packerFifo;
};

#endif